home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 051-075 / scopedisk64 / blk / src / listmac.h < prev    next >
C/C++ Source or Header  |  1995-03-19  |  926b  |  26 lines

  1. /* My MinNode definitions, basically, but with names
  2.  * that I like better for C applications
  3.  */
  4. struct Nod {
  5.    struct Nod *next,*prev;
  6. };
  7.  
  8. struct Lst {
  9.    struct Nod *head,*tail,*tailprev;
  10. };
  11.  
  12. /* some macros for dealing with Exec-like lists
  13.  *    HEAD(lst)   struct Lst *lst:  gives first node
  14.  *    TAIL(lst)   struct Lst *lst:  gives last node
  15.  *    NEXT(nod)   struct Nod *nod:  gives next element
  16.  *    PREV(nod)   struct Nod *nod:  gives previous element
  17.  *    TEST(nod)   struct Nod *nod:  is non-zero for valid nodes
  18.  *    OFF1(nod)   struct Nod *nod:  offsets backward one node
  19.  */
  20. #define HEAD(lst)    (void *)(((struct Lst*)(lst))->head)
  21. #define TAIL(lst)    (void *)(((struct Lst*)(lst))->tailprev)
  22. #define NEXT(nod)    (void *)(((struct Nod *)(nod))->next)
  23. #define PREV(nod)    (void *)(((struct Nod *)(nod))->prev)
  24. #define TEST(nod)    NEXT(nod)
  25. #define OFF1(nod)    (void *)((char *)(nod)-sizeof(struct Nod))
  26.